<html>
<head><meta charset="utf-8"><title>transitive relation · t-compiler/wg-parallel-rustc · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/index.html">t-compiler/wg-parallel-rustc</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html">transitive relation</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="175849620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849620">(Sep 16 2019 at 20:31)</a>:</h4>
<p>Ping <span class="user-mention" data-user-id="116266">@Santiago Pastorino</span> we could discuss possibly refactoring the transitive relation code here</p>



<a name="175849827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849827">(Sep 16 2019 at 20:32)</a>:</h4>
<p>hey</p>



<a name="175849828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849828">(Sep 16 2019 at 20:32)</a>:</h4>
<p>sure</p>



<a name="175849853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849853">(Sep 16 2019 at 20:32)</a>:</h4>
<p>I was finishing watching the recording</p>



<a name="175849888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849888">(Sep 16 2019 at 20:33)</a>:</h4>
<p>but yeah, already saw the transitive relation part :)</p>



<a name="175849999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175849999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175849999">(Sep 16 2019 at 20:34)</a>:</h4>
<p>I'm not sure what I would do here either except that it feels sort of complex the way it is :)</p>



<a name="175850022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175850022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175850022">(Sep 16 2019 at 20:35)</a>:</h4>
<p>I'd need to read a bit the code to see what's about, right now I can't even ask questions :)</p>



<a name="175850103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175850103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175850103">(Sep 16 2019 at 20:36)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Do I understand correctly that the transitive relation is essentially just saying that for a, b, c, if a &lt;: b and b &lt;:c then a &lt;: c?</p>



<a name="175850218"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175850218" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175850218">(Sep 16 2019 at 20:38)</a>:</h4>
<p>It does look like it's essentially tracking that along with querying that information</p>



<a name="175850463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/175850463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#175850463">(Sep 16 2019 at 20:40)</a>:</h4>
<p>I was thinking that we might be able to store/manipulate this fairly optimally via <a href="https://en.wikipedia.org/wiki/Disjoint-set_data_structure" target="_blank" title="https://en.wikipedia.org/wiki/Disjoint-set_data_structure">https://en.wikipedia.org/wiki/Disjoint-set_data_structure</a> with the addition that we "sort" the elements in each set</p>



<a name="176400877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176400877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176400877">(Sep 23 2019 at 19:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> yes that is all that it is tracking, and yes it's not a super smart data structure. I mean for that matter, we could just .. do a DFS. It's typically pretty small sets.</p>



<a name="176400912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176400912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176400912">(Sep 23 2019 at 19:29)</a>:</h4>
<p>I don't quite know what use disjoint set would have</p>



<a name="176400941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176400941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176400941">(Sep 23 2019 at 19:30)</a>:</h4>
<p>isn't that more for "equality classes"? in particular, it doesn't capture ordering within a set, I don't think?</p>



<a name="176400994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176400994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176400994">(Sep 23 2019 at 19:30)</a>:</h4>
<p>I think what'd start with is just removing the transitive computation and doing a DFS</p>



<a name="176400998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176400998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176400998">(Sep 23 2019 at 19:30)</a>:</h4>
<p>and see how that performs :)</p>



<a name="176401011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176401011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176401011">(Sep 23 2019 at 19:30)</a>:</h4>
<p>well, wait, there's a <em>bit</em> more to it</p>



<a name="176401020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176401020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176401020">(Sep 23 2019 at 19:30)</a>:</h4>
<p>I remember there is some stuff, the postdom methods</p>



<a name="176401033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176401033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176401033">(Sep 23 2019 at 19:30)</a>:</h4>
<p>that said, this is something we can totally make thread-safe, since it's redundant computation</p>



<a name="176401112"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176401112" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176401112">(Sep 23 2019 at 19:31)</a>:</h4>
<p>Hm, I was thinking that we would sort within each set to maintain transitivity, but maybe that doesn't really make sense</p>



<a name="176405785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176405785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176405785">(Sep 23 2019 at 20:21)</a>:</h4>
<p>Isn't this only used in the AST borrowchecker?</p>



<a name="176407824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176407824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176407824">(Sep 23 2019 at 20:45)</a>:</h4>
<p>no, it's still used in NLL</p>



<a name="176407856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176407856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176407856">(Sep 23 2019 at 20:45)</a>:</h4>
<p>anyway <span class="user-mention" data-user-id="116122">@simulacrum</span> the elements of this set are named lifetimes like <code>'a</code>, <code>'b</code> -- so there usually aren't <em>that</em> many members</p>



<a name="176408116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408116">(Sep 23 2019 at 20:48)</a>:</h4>
<blockquote>
<p>no, it's still used in NLL</p>
</blockquote>
<p>hmm but, in NLL it's probably thread-local</p>



<a name="176408163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408163">(Sep 23 2019 at 20:49)</a>:</h4>
<p>ah well it still appears in the <code>TypeckTables</code></p>



<a name="176408364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408364">(Sep 23 2019 at 20:51)</a>:</h4>
<p>the truth is that the most obvious change to make here would just be to improve how the thing itself works; e.g., use an <code>Arc</code> to store the computed transitive value and avoid holding the lock quite so long, but otherwise leave it</p>



<a name="176408949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408949">(Sep 23 2019 at 20:57)</a>:</h4>
<p>Ah if it's only named lifetimes (not inferred relations or so between anonymous lifetimes) then seems fine to just redo the calculations each time I imagine? Like, I can't imagine more than like 5 elements in these lists</p>



<a name="176408957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408957">(Sep 23 2019 at 20:57)</a>:</h4>
<p>Unless I'm missing something</p>



<a name="176408985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176408985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176408985">(Sep 23 2019 at 20:58)</a>:</h4>
<p>well I think it can be more because it includes anonymous lifetimes</p>



<a name="176409024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409024">(Sep 23 2019 at 20:58)</a>:</h4>
<p>but yeah the magnitude is small</p>



<a name="176409044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409044">(Sep 23 2019 at 20:58)</a>:</h4>
<p>we could try just disabling caching and doing a perf run =)</p>



<a name="176409050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409050">(Sep 23 2019 at 20:58)</a>:</h4>
<p>just to see</p>



<a name="176409094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409094">(Sep 23 2019 at 20:59)</a>:</h4>
<p>Ah, so "anonymous lifetimes" sounds like not "named lifetimes" :)</p>



<a name="176409112"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409112" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409112">(Sep 23 2019 at 20:59)</a>:</h4>
<p>But then yeah, I could see there being more - I can probably get a branch for a perf run w/o the cache put together</p>



<a name="176409222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176409222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176409222">(Sep 23 2019 at 21:00)</a>:</h4>
<blockquote>
<p>Ah, so "anonymous lifetimes" sounds like not "named lifetimes" :)</p>
</blockquote>
<p>yeah so I really just mean "lifetime parameters"</p>



<a name="176700463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700463">(Sep 26 2019 at 21:54)</a>:</h4>
<p>was coming back to this but saw <span class="user-mention" data-user-id="116122">@simulacrum</span> took care of it</p>



<a name="176700466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700466">(Sep 26 2019 at 21:55)</a>:</h4>
<p>great :)</p>



<a name="176700483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700483">(Sep 26 2019 at 21:55)</a>:</h4>
<p>It might not be done perse</p>



<a name="176700491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700491">(Sep 26 2019 at 21:55)</a>:</h4>
<p>I don't think Niko has reviewed PR?</p>



<a name="176700566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700566">(Sep 26 2019 at 21:56)</a>:</h4>
<p>probably not?</p>



<a name="176700580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700580">(Sep 26 2019 at 21:56)</a>:</h4>
<p>why did grammar regressed 25%?</p>



<a name="176700608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700608">(Sep 26 2019 at 21:57)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/64719" target="_blank" title="https://github.com/rust-lang/rust/pull/64719">https://github.com/rust-lang/rust/pull/64719</a></p>



<a name="176700621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700621">(Sep 26 2019 at 21:57)</a>:</h4>
<p>well, we _did_ remove caching</p>



<a name="176700626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700626">(Sep 26 2019 at 21:57)</a>:</h4>
<p>I haven't profiled though</p>



<a name="176700703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700703">(Sep 26 2019 at 21:58)</a>:</h4>
<p>ahh yeah but wall time is more or less the same</p>



<a name="176700733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700733">(Sep 26 2019 at 21:58)</a>:</h4>
<p>so you meant that there are more instructions being executed for that particular profile but it more or less takes the same time?</p>



<a name="176700745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176700745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176700745">(Sep 26 2019 at 21:59)</a>:</h4>
<p>unsure I'm understanding what you meant</p>



<a name="176701160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176701160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176701160">(Sep 26 2019 at 22:05)</a>:</h4>
<p>I'm saying that I don't know why there's such a big instruction regression for grammar beyond "less caching"</p>



<a name="176705709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176705709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176705709">(Sep 26 2019 at 23:24)</a>:</h4>
<p>btw, would be nice to check <a href="https://perf.rust-lang.org/detailed-query.html?commit=572a74f4ea21f93cea1bd5d1c73c3b713c386146&amp;benchmark=wg-grammar-check&amp;run_name=clean" target="_blank" title="https://perf.rust-lang.org/detailed-query.html?commit=572a74f4ea21f93cea1bd5d1c73c3b713c386146&amp;benchmark=wg-grammar-check&amp;run_name=clean">https://perf.rust-lang.org/detailed-query.html?commit=572a74f4ea21f93cea1bd5d1c73c3b713c386146&amp;benchmark=wg-grammar-check&amp;run_name=clean</a> against same done with <a href="https://github.com/rust-lang/rust/commit/ac5a6680a0eaa7f90438ea011e8fc748864dbf1b" target="_blank" title="https://github.com/rust-lang/rust/commit/ac5a6680a0eaa7f90438ea011e8fc748864dbf1b">https://github.com/rust-lang/rust/commit/ac5a6680a0eaa7f90438ea011e8fc748864dbf1b</a></p>



<a name="176705746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176705746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176705746">(Sep 26 2019 at 23:25)</a>:</h4>
<p>unsure if you can get and compare profile results for both commits on <a href="https://perf.rust-lang.org/" target="_blank" title="https://perf.rust-lang.org/">https://perf.rust-lang.org/</a></p>



<a name="176705855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176705855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176705855">(Sep 26 2019 at 23:27)</a>:</h4>
<p><span class="user-mention" data-user-id="116266">@Santiago Pastorino</span> Not sure I follow you, which two commits do you want diff'd?</p>



<a name="176705916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176705916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176705916">(Sep 26 2019 at 23:28)</a>:</h4>
<p>we can recollect and then there'll be self profile diff between master/new</p>



<a name="176706733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706733">(Sep 26 2019 at 23:47)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> wanted to compare between your branch and master</p>



<a name="176706740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706740">(Sep 26 2019 at 23:47)</a>:</h4>
<p>ah, yeah, we'll need another run for that -- I'll go start one</p>



<a name="176706744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706744">(Sep 26 2019 at 23:47)</a>:</h4>
<p>how you do that?</p>



<a name="176706788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706788">(Sep 26 2019 at 23:48)</a>:</h4>
<p>Just rerun perf :)</p>



<a name="176706789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706789">(Sep 26 2019 at 23:48)</a>:</h4>
<p><code>@bors try @rust-timer queue</code></p>



<a name="176706791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706791">(Sep 26 2019 at 23:48)</a>:</h4>
<p>I mean, but isn't that what you already did?</p>



<a name="176706798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706798">(Sep 26 2019 at 23:48)</a>:</h4>
<p>I think I'm not following you :)</p>



<a name="176706808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706808">(Sep 26 2019 at 23:49)</a>:</h4>
<p>of course one can do that easily locally just using perf</p>



<a name="176706817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706817">(Sep 26 2019 at 23:49)</a>:</h4>
<p>my question is ... <code>@bors try @rust-timer queue</code> seems to be showing that detailed view only of the PR</p>



<a name="176706821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706821">(Sep 26 2019 at 23:49)</a>:</h4>
<p>but I want to see the PR and master (the thing we are comparing against)</p>



<a name="176706866"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706866" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706866">(Sep 26 2019 at 23:50)</a>:</h4>
<p>to see where is wasting more time the pr in comparison against master</p>



<a name="176706872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706872">(Sep 26 2019 at 23:50)</a>:</h4>
<p>Well so there's two things at play here</p>



<a name="176706877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706877">(Sep 26 2019 at 23:50)</a>:</h4>
<p>the perf run that I did on that PR was before we landed self-profile work</p>



<a name="176706884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706884">(Sep 26 2019 at 23:50)</a>:</h4>
<p>so that's why I'm recollecting</p>



<a name="176706897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive%20relation/near/176706897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/187679-t-compiler/wg-parallel-rustc/topic/transitive.20relation.html#176706897">(Sep 26 2019 at 23:51)</a>:</h4>
<p>but to get the diff detailed query view you generally click on %change column on the compare page</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>